

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Elasticity calculations &mdash; quippy 7ea04c5+ documentation</title>
  

  
  
    <link rel="shortcut icon" href="_static/favicon.ico"/>
  
  
  

  
  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
        <script type="text/javascript" src="_static/jquery.js"></script>
        <script type="text/javascript" src="_static/underscore.js"></script>
        <script type="text/javascript" src="_static/doctools.js"></script>
        <script type="text/javascript" src="_static/language_data.js"></script>
        <script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
        <script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"processClass": "math|output_area", "processEscapes": true, "ignoreClass": "document", "inlineMath": [["$", "$"], ["\\(", "\\)"]]}})</script>
    
    <script type="text/javascript" src="_static/js/theme.js"></script>

    

  
  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="_static/theme_overrides.css" type="text/css" />
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="prev" title="CP2K I/O and driver" href="cp2k.html" /> 
</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
          

          
            <a href="index.html" class="icon icon-home"> quippy
          

          
            
            <img src="_static/hybrid.png" class="logo" alt="Logo"/>
          
          </a>

          
            
            
              <div class="version">
                7ea04c5+
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
    
            
            
              
            
            
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction to <code class="docutils literal notranslate"><span class="pre">quippy</span></code></a></li>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation of QUIP and quippy</a></li>
<li class="toctree-l1"><a class="reference internal" href="Tutorials/index.html">Tutorials</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="quippy.html">Quippy library reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="quippy.html#core-functionality">Core functionality</a></li>
<li class="toctree-l2"><a class="reference internal" href="quippy.html#structure-generation-manipulation-and-analysis">Structure generation, manipulation and analysis</a></li>
<li class="toctree-l2"><a class="reference internal" href="quippy.html#molecular-dynamics">Molecular Dynamics</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="quippy.html#additional-tools-for-potentials">Additional tools for Potentials</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="cp2k.html">CP2K I/O and driver</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Elasticity calculations</a><ul class="simple">
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="polarization.html">Tools for polarizable potentials</a></li>
<li class="toctree-l3"><a class="reference internal" href="electrostaticembed.html">Tools for electrostatic embedding</a></li>
<li class="toctree-l3"><a class="reference internal" href="phonons.html">Phonon calculation</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="quippy.html#mathematical-and-optimisation-tools">Mathematical and optimisation tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="quippy.html#units-data-and-constants">Units, Data and Constants</a></li>
<li class="toctree-l2"><a class="reference internal" href="quippy.html#low-level-routines-and-datatypes">Low level routines and datatypes</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="visualisation.html">Visualisation Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="fortran_wrapper.html">Appendix: wrapping Fortran 90 Code</a></li>
<li class="toctree-l1"><a class="reference internal" href="teach_sparse.html">Command line options of the teach_sparse main program</a></li>
</ul>

            
          
    <p></p>
    <ul>
        <li><a href="genindex.html">Index</a></li>
        <li><a href="py-modindex.html">Module Index</a></li>
        <li><a href="search.html">Search Page</a></li>
        <li><a href="_modules/index.html">Module Source Code</a></li>
    </ul>
  
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="index.html">quippy</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="index.html">Docs</a> &raquo;</li>
        
          <li><a href="quippy.html">Quippy library reference</a> &raquo;</li>
        
      <li>Elasticity calculations</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
            
            <a href="_sources/elasticity.rst.txt" rel="nofollow"> View page source</a>
          
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  
<style>
/* CSS overrides for sphinx_rtd_theme */

/* 24px margin */
.nbinput.nblast,
.nboutput.nblast {
    margin-bottom: 19px;  /* padding has already 5px */
}

/* ... except between code cells! */
.nblast + .nbinput {
    margin-top: -19px;
}

.admonition > p:before {
    margin-right: 4px;  /* make room for the exclamation icon */
}

/* Fix math alignment, see https://github.com/rtfd/sphinx_rtd_theme/pull/686 */
.math {
    text-align: unset;
}
</style>
<div class="section" id="module-quippy.elasticity">
<span id="elasticity-calculations"></span><h1>Elasticity calculations<a class="headerlink" href="#module-quippy.elasticity" title="Permalink to this headline">¶</a></h1>
<p>Module contents for <a class="reference internal" href="#module-quippy.elasticity" title="quippy.elasticity: Elasticity calculations"><code class="xref py py-mod docutils literal notranslate"><span class="pre">quippy.elasticity</span></code></a>:</p>
<p class="rubric">Classes</p>
<table border="1" class="longtable docutils">
<colgroup>
<col width="10%" />
<col width="90%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.AtomResolvedStressField" title="quippy.elasticity.AtomResolvedStressField"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AtomResolvedStressField</span></code></a>([bulk,&nbsp;a,&nbsp;cij,&nbsp;method])</td>
<td>Calculator interface to <a class="reference internal" href="#quippy.elasticity.elastic_fields_fortran" title="quippy.elasticity.elastic_fields_fortran"><code class="xref py py-func docutils literal notranslate"><span class="pre">elastic_fields_fortran()</span></code></a> and <a class="reference internal" href="#quippy.elasticity.elastic_fields" title="quippy.elasticity.elastic_fields"><code class="xref py py-func docutils literal notranslate"><span class="pre">elastic_fields()</span></code></a></td>
</tr>
</tbody>
</table>
<p class="rubric">Functions</p>
<table border="1" class="longtable docutils">
<colgroup>
<col width="10%" />
<col width="90%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.einstein_frequencies" title="quippy.elasticity.einstein_frequencies"><code class="xref py py-obj docutils literal notranslate"><span class="pre">einstein_frequencies</span></code></a>(pot,at,[args_str,ii,delta])</td>
<td><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.elastic_fields" title="quippy.elasticity.elastic_fields"><code class="xref py py-obj docutils literal notranslate"><span class="pre">elastic_fields</span></code></a>(at[,&nbsp;a,&nbsp;bond_length,&nbsp;c,&nbsp;…])</td>
<td>Compute atomistic strain field and linear elastic stress response.</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.graphene_elastic" title="quippy.elasticity.graphene_elastic"><code class="xref py py-obj docutils literal notranslate"><span class="pre">graphene_elastic</span></code></a>(pot,[args_str,cb])</td>
<td>Calculate in-plane elastic constants of a graphene sheet with lattice parameter <code class="docutils literal notranslate"><span class="pre">a</span></code> using the Potential <code class="docutils literal notranslate"><span class="pre">pot</span></code>.</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.poisson_ratio" title="quippy.elasticity.poisson_ratio"><code class="xref py py-obj docutils literal notranslate"><span class="pre">poisson_ratio</span></code></a>(cc,l,m)</td>
<td>Calculate Poisson ratio <span class="math notranslate nohighlight">\(\nu_{lm}\)</span> from <span class="math notranslate nohighlight">\(6\times6\)</span> elastic constant matrix <span class="math notranslate nohighlight">\(C_{ij}\)</span>.</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.youngs_modulus" title="quippy.elasticity.youngs_modulus"><code class="xref py py-obj docutils literal notranslate"><span class="pre">youngs_modulus</span></code></a>(c,l)</td>
<td>Calculate Youngs modulus <span class="math notranslate nohighlight">\(E_l\)</span> from <span class="math notranslate nohighlight">\(6\times6\)</span> elastic constants matrix <span class="math notranslate nohighlight">\(C_{ij}\)</span> This is the modulus for loading in the <span class="math notranslate nohighlight">\(l\)</span> direction.</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.strain_matrix" title="quippy.elasticity.strain_matrix"><code class="xref py py-obj docutils literal notranslate"><span class="pre">strain_matrix</span></code></a>(strain_vector)</td>
<td>Form a 3x3 strain matrix from a 6 component vector in Voigt notation</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.stress_matrix" title="quippy.elasticity.stress_matrix"><code class="xref py py-obj docutils literal notranslate"><span class="pre">stress_matrix</span></code></a>(stress_vector)</td>
<td>Form a 3x3 stress matrix from a 6 component vector in Voigt notation</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.strain_vector" title="quippy.elasticity.strain_vector"><code class="xref py py-obj docutils literal notranslate"><span class="pre">strain_vector</span></code></a>(strain_matrix)</td>
<td>Form a 6 component strain vector in Voight notation from a 3x3 matrix</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.stress_vector" title="quippy.elasticity.stress_vector"><code class="xref py py-obj docutils literal notranslate"><span class="pre">stress_vector</span></code></a>(stress_matrix)</td>
<td>Form a 6 component stress vector in Voight notation from a 3x3 matrix</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.fit_elastic_constants" title="quippy.elasticity.fit_elastic_constants"><code class="xref py py-obj docutils literal notranslate"><span class="pre">fit_elastic_constants</span></code></a>(configs[,&nbsp;symmetry,&nbsp;…])</td>
<td>quippy.elasticity.fit_elastic_constants() deprecated, please use</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.elastic_constants" title="quippy.elasticity.elastic_constants"><code class="xref py py-obj docutils literal notranslate"><span class="pre">elastic_constants</span></code></a>(pot,&nbsp;at[,&nbsp;sym,&nbsp;relax,&nbsp;…])</td>
<td>quippy.elasticity.elastic_contants() deprecated, please use</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.atomic_strain" title="quippy.elasticity.atomic_strain"><code class="xref py py-obj docutils literal notranslate"><span class="pre">atomic_strain</span></code></a>(at,&nbsp;r0[,&nbsp;crystal_factor])</td>
<td>Atomic strain as defined by JA Zimmerman in <cite>Continuum and Atomistic Modeling of Dislocation Nucleation at Crystal Surface Ledges</cite>, PhD Thesis, Stanford University (1999).</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.elastic_fields_fortran" title="quippy.elasticity.elastic_fields_fortran"><code class="xref py py-obj docutils literal notranslate"><span class="pre">elastic_fields_fortran</span></code></a>(at,a,[c11,c12,c44,cij])</td>
<td>elastic_fields(at,a,[c11,c12,c44,cij])</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.elastic_fields" title="quippy.elasticity.elastic_fields"><code class="xref py py-obj docutils literal notranslate"><span class="pre">elastic_fields</span></code></a>(at[,&nbsp;a,&nbsp;bond_length,&nbsp;c,&nbsp;…])</td>
<td>Compute atomistic strain field and linear elastic stress response.</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.transform_elasticity" title="quippy.elasticity.transform_elasticity"><code class="xref py py-obj docutils literal notranslate"><span class="pre">transform_elasticity</span></code></a>(c,&nbsp;R)</td>
<td>Transform c as a rank-4 tensor by the rotation matrix R.</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.rayleigh_wave_speed" title="quippy.elasticity.rayleigh_wave_speed"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rayleigh_wave_speed</span></code></a>(C,&nbsp;rho[,&nbsp;a,&nbsp;b,&nbsp;isotropic])</td>
<td>Rayleigh wave speed in a crystal.</td>
</tr>
</tbody>
</table>
<dl class="class">
<dt id="quippy.elasticity.AtomResolvedStressField">
<em class="property">class </em><code class="descclassname">quippy.elasticity.</code><code class="descname">AtomResolvedStressField</code><span class="sig-paren">(</span><em>bulk=None</em>, <em>a=None</em>, <em>cij=None</em>, <em>method='fortran'</em>, <em>**extra_args</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#AtomResolvedStressField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.AtomResolvedStressField" title="Permalink to this definition">¶</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#object" title="(in Python v2.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>Calculator interface to <a class="reference internal" href="#quippy.elasticity.elastic_fields_fortran" title="quippy.elasticity.elastic_fields_fortran"><code class="xref py py-func docutils literal notranslate"><span class="pre">elastic_fields_fortran()</span></code></a> and <a class="reference internal" href="#quippy.elasticity.elastic_fields" title="quippy.elasticity.elastic_fields"><code class="xref py py-func docutils literal notranslate"><span class="pre">elastic_fields()</span></code></a></p>
<p>Computes local stresses from atom resolved strain tensor and linear elasticity.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><dl class="first last docutils">
<dt><strong>bulk: Atoms object, optional</strong></dt>
<dd><p class="first last">If present, set <cite>a</cite> and <code class="docutils literal notranslate"><span class="pre">cij</span></code> from <code class="docutils literal notranslate"><span class="pre">bulk.cell[0,0]</span></code> and
<code class="docutils literal notranslate"><span class="pre">bulk.get_calculator().get_elastic_constants(bulk)</span></code>. This means
<cite>bulk</cite> should be a relaxed cubic unit cell.</p>
</dd>
<dt><strong>a</strong> <span class="classifier-delimiter">:</span> <span class="classifier">float, optional</span></dt>
<dd><p class="first last">Lattice constant</p>
</dd>
<dt><strong>cij</strong> <span class="classifier-delimiter">:</span> <span class="classifier">array_like, optional</span></dt>
<dd><p class="first last">6 x 6 matrix of elastic constants <span class="math notranslate nohighlight">\(C_{ij}\)</span>.
Can be obtained with :meth:<a href="#id1"><span class="problematic" id="id2">`</span></a>.Potential.get_elastic_constants’.</p>
</dd>
<dt><strong>method</strong> <span class="classifier-delimiter">:</span> <span class="classifier">str</span></dt>
<dd><p class="first last">Which routine to use: one of “fortran” or “python”.</p>
</dd>
<dt><strong>**extra_args</strong> <span class="classifier-delimiter">:</span> <span class="classifier">dict</span></dt>
<dd><p class="first last">Extra arguments to be passed along to python <a class="reference internal" href="#quippy.elasticity.elastic_fields" title="quippy.elasticity.elastic_fields"><code class="xref py py-func docutils literal notranslate"><span class="pre">elastic_fields()</span></code></a>, e.g.
for non-cubic cells.</p>
</dd>
</dl>
</td>
</tr>
</tbody>
</table>
<p class="rubric">Methods</p>
<table border="1" class="longtable docutils">
<colgroup>
<col width="10%" />
<col width="90%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td><a class="reference internal" href="#quippy.elasticity.AtomResolvedStressField.get_stress" title="quippy.elasticity.AtomResolvedStressField.get_stress"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_stress</span></code></a>(atoms)</td>
<td>Returns total stress on <cite>atoms</cite>, as a 6-element array</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#quippy.elasticity.AtomResolvedStressField.get_stresses" title="quippy.elasticity.AtomResolvedStressField.get_stresses"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_stresses</span></code></a>(atoms[,&nbsp;cutoff])</td>
<td>Returns local stresses on <cite>atoms</cite> as a <code class="docutils literal notranslate"><span class="pre">(len(atoms),</span> <span class="pre">3,</span> <span class="pre">3)</span></code> array</td>
</tr>
</tbody>
</table>
<dl class="method">
<dt id="quippy.elasticity.AtomResolvedStressField.get_stress">
<code class="descname">get_stress</code><span class="sig-paren">(</span><em>atoms</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#AtomResolvedStressField.get_stress"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.AtomResolvedStressField.get_stress" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns total stress on <cite>atoms</cite>, as a 6-element array</p>
</dd></dl>

<dl class="method">
<dt id="quippy.elasticity.AtomResolvedStressField.get_stresses">
<code class="descname">get_stresses</code><span class="sig-paren">(</span><em>atoms</em>, <em>cutoff=3.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#AtomResolvedStressField.get_stresses"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.AtomResolvedStressField.get_stresses" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns local stresses on <cite>atoms</cite> as a <code class="docutils literal notranslate"><span class="pre">(len(atoms),</span> <span class="pre">3,</span> <span class="pre">3)</span></code> array</p>
</dd></dl>

</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.einstein_frequencies">
<code class="descclassname">quippy.elasticity.</code><code class="descname">einstein_frequencies</code><span class="sig-paren">(</span><em>pot</em>, <em>at</em><span class="optional">[</span>, <em>args_str</em>, <em>ii</em>, <em>delta</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#quippy.elasticity.einstein_frequencies" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><dl class="first docutils">
<dt><strong>pot</strong> <span class="classifier-delimiter">:</span> <span class="classifier"><a class="reference internal" href="potential.html#quippy.potential.Potential" title="quippy.potential.Potential"><code class="xref py py-class docutils literal notranslate"><span class="pre">Potential</span></code></a> object</span></dt>
<dd><p class="first last">Potential to use</p>
</dd>
<dt><strong>at</strong> <span class="classifier-delimiter">:</span> <span class="classifier"><a class="reference internal" href="atoms.html#quippy.atoms.Atoms" title="quippy.atoms.Atoms"><code class="xref py py-class docutils literal notranslate"><span class="pre">Atoms</span></code></a> object</span></dt>
<dd><p class="first last">Atoms structure - should be equilibrium bulk configuation</p>
</dd>
<dt><strong>args_str</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input string(len=-1), optional</span></dt>
<dd><p class="first last">arg_str for potential_calc</p>
</dd>
<dt><strong>ii</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input int, optional</span></dt>
<dd><p class="first last">The atom to displace (default 1)</p>
</dd>
<dt><strong>delta</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input float, optional</span></dt>
<dd><p class="first last">How much to displace it (default 1e-4_dp)</p>
</dd>
</dl>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="first last docutils">
<dt><strong>ret_w_e</strong> <span class="classifier-delimiter">:</span> <span class="classifier">rank-1 array(‘d’) with bounds (3)</span></dt>
<dd></dd>
</dl>
</td>
</tr>
</tbody>
</table>
<p class="rubric">References</p>
<p>Routine is wrapper around Fortran routine <code class="docutils literal notranslate"><span class="pre">einstein_frequencies</span></code> defined in file <a class="reference external" href="https://github.com/libAtoms/QUIP/blob/public/src/Utils/elasticity.f95">src/Utils/elasticity.f95</a>.</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.elastic_fields">
<code class="descclassname">quippy.elasticity.</code><code class="descname">elastic_fields</code><span class="sig-paren">(</span><em>at</em>, <em>a=None</em>, <em>bond_length=None</em>, <em>c=None</em>, <em>c_vector=None</em>, <em>cij=None</em>, <em>save_reference=False</em>, <em>use_reference=False</em>, <em>mask=None</em>, <em>interpolate=False</em>, <em>cutoff_factor=1.2</em>, <em>system='tetrahedric'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#elastic_fields"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.elastic_fields" title="Permalink to this definition">¶</a></dt>
<dd><p>Compute atomistic strain field and linear elastic stress response.</p>
<p>Stress and strain are stored in compressed Voigt notation:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">at</span><span class="o">.</span><span class="n">strain</span><span class="p">[:,</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">e_xx</span><span class="p">,</span><span class="n">e_yy</span><span class="p">,</span><span class="n">e_zz</span><span class="p">,</span><span class="n">e_yz</span><span class="p">,</span><span class="n">e_xz</span><span class="p">,</span><span class="n">e_xy</span><span class="p">]</span>
<span class="n">at</span><span class="o">.</span><span class="n">stress</span><span class="p">[:,</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">sig_xx</span><span class="p">,</span> <span class="n">sig_yy</span><span class="p">,</span> <span class="n">sig_zz</span><span class="p">,</span> <span class="n">sig_yz</span><span class="p">,</span> <span class="n">sig_xz</span><span class="p">,</span> <span class="n">sig_xy</span><span class="p">]</span>
</pre></div>
</div>
<p>so that sig = dot(C, strain) in the appropriate reference frame.</p>
<p>Four-fold coordinate atoms within <cite>at</cite> are used to define
tetrahedra. The deformation of each tetrahedra is determined
relative to the ideal structure, using <cite>a</cite> as the cubic lattice
constant (related to bond length by a factor <span class="math notranslate nohighlight">\(sqrt{3}/4\)</span>).
This deformation is then split into a strain and a rotation
using a Polar decomposition.</p>
<p>If <cite>save_reference</cite> or <cite>use_reference</cite> are True then <cite>at</cite> must have
a <cite>primitive_index</cite> integer property which is different for each
atom in the primitive unit cell. <cite>save_reference</cite> causes the
local strain and rotation for one atom of each primitive type
to be saved as entries <cite>at.params</cite>. Conversely, <cite>use_reference</cite> uses
this information and to undo the local strain and rotation.</p>
<p>The strain is then transformed into the crystal reference frame
(i.e. x=100, y=010, z=001) to calculate the stress using the <cite>cij</cite>
matrix of elastic constants. Finally the resulting stress is
transformed back into the sample frame.</p>
<p>The stress and strain tensor fields are interpolated to give
values for atoms which are not four-fold coordinated (for example
oxygen atoms in silica).</p>
<p>Eigenvalues and eigenvectors of the stress are stored in the
properties <cite>stress_evals</cite>,`stress_evec1`, <cite>stress_evec2</cite> and
<cite>stress_evec3</cite>, ordered decreasingly by eigenvalue so that the
principal eigenvalue and eigenvector are <cite>stress_evals[1,:]</cite> and
<cite>stress_evec1[:,i]</cite> respectively.</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.graphene_elastic">
<code class="descclassname">quippy.elasticity.</code><code class="descname">graphene_elastic</code><span class="sig-paren">(</span><em>pot</em><span class="optional">[</span>, <em>args_str</em>, <em>cb</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#quippy.elasticity.graphene_elastic" title="Permalink to this definition">¶</a></dt>
<dd><p>Calculate in-plane elastic constants of a graphene sheet with lattice
parameter <code class="docutils literal notranslate"><span class="pre">a</span></code> using the Potential <code class="docutils literal notranslate"><span class="pre">pot</span></code>. On exit, <code class="docutils literal notranslate"><span class="pre">poisson</span></code>
will contain the in plane poisson ratio (dimensionless) and <code class="docutils literal notranslate"><span class="pre">young</span></code> the
in plane Young’s modulus (GPa).</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><dl class="first last docutils">
<dt><strong>pot</strong> <span class="classifier-delimiter">:</span> <span class="classifier"><a class="reference internal" href="potential.html#quippy.potential.Potential" title="quippy.potential.Potential"><code class="xref py py-class docutils literal notranslate"><span class="pre">Potential</span></code></a> object</span></dt>
<dd></dd>
<dt><strong>a</strong> <span class="classifier-delimiter">:</span> <span class="classifier">float</span></dt>
<dd></dd>
<dt><strong>poisson</strong> <span class="classifier-delimiter">:</span> <span class="classifier">float</span></dt>
<dd></dd>
<dt><strong>young</strong> <span class="classifier-delimiter">:</span> <span class="classifier">float</span></dt>
<dd></dd>
<dt><strong>args_str</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input string(len=-1), optional</span></dt>
<dd><p class="first last">arg_str for potential_calc</p>
</dd>
<dt><strong>cb</strong> <span class="classifier-delimiter">:</span> <span class="classifier">in/output rank-0 array(float,’d’), optional</span></dt>
<dd></dd>
</dl>
</td>
</tr>
</tbody>
</table>
<p class="rubric">References</p>
<p>Routine is wrapper around Fortran routine <code class="docutils literal notranslate"><span class="pre">graphene_elastic</span></code> defined in file <a class="reference external" href="https://github.com/libAtoms/QUIP/blob/public/src/Utils/elasticity.f95">src/Utils/elasticity.f95</a>.</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.poisson_ratio">
<code class="descclassname">quippy.elasticity.</code><code class="descname">poisson_ratio</code><span class="sig-paren">(</span><em>cc</em>, <em>l</em>, <em>m</em><span class="sig-paren">)</span><a class="headerlink" href="#quippy.elasticity.poisson_ratio" title="Permalink to this definition">¶</a></dt>
<dd><p>Calculate Poisson ratio <span class="math notranslate nohighlight">\(\nu_{lm}\)</span> from <span class="math notranslate nohighlight">\(6\times6\)</span> elastic
constant matrix <span class="math notranslate nohighlight">\(C_{ij}\)</span>. This is the response in <span class="math notranslate nohighlight">\(m\)</span> direction
to pulling in <span class="math notranslate nohighlight">\(l\)</span> direction. Result is dimensionless.
Formula is from W. Brantley, Calculated elastic constants for stress problems associated
with semiconductor devices. J. Appl. Phys., 44, 534 (1973).</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><dl class="first docutils">
<dt><strong>cc</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input rank-2 array(‘d’) with bounds (6,6)</span></dt>
<dd></dd>
<dt><strong>l</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input rank-1 array(‘d’) with bounds (3)</span></dt>
<dd></dd>
<dt><strong>m</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input rank-1 array(‘d’) with bounds (3)</span></dt>
<dd></dd>
</dl>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="first last docutils">
<dt><strong>ret_v</strong> <span class="classifier-delimiter">:</span> <span class="classifier">float</span></dt>
<dd></dd>
</dl>
</td>
</tr>
</tbody>
</table>
<p class="rubric">References</p>
<p>Routine is wrapper around Fortran routine <code class="docutils literal notranslate"><span class="pre">poisson_ratio</span></code> defined in file <a class="reference external" href="https://github.com/libAtoms/QUIP/blob/public/src/Utils/elasticity.f95">src/Utils/elasticity.f95</a>.</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.youngs_modulus">
<code class="descclassname">quippy.elasticity.</code><code class="descname">youngs_modulus</code><span class="sig-paren">(</span><em>c</em>, <em>l</em><span class="sig-paren">)</span><a class="headerlink" href="#quippy.elasticity.youngs_modulus" title="Permalink to this definition">¶</a></dt>
<dd><p>Calculate Youngs modulus <span class="math notranslate nohighlight">\(E_l\)</span> from <span class="math notranslate nohighlight">\(6\times6\)</span> elastic constants matrix <span class="math notranslate nohighlight">\(C_{ij}\)</span>
This is the modulus for loading in the <span class="math notranslate nohighlight">\(l\)</span> direction.
Formula is from W. Brantley, Calculated elastic constants for stress problems associated
with semiconductor devices. J. Appl. Phys., 44, 534 (1973).</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><dl class="first docutils">
<dt><strong>c</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input rank-2 array(‘d’) with bounds (6,6)</span></dt>
<dd></dd>
<dt><strong>l</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input rank-1 array(‘d’) with bounds (3)</span></dt>
<dd></dd>
</dl>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="first last docutils">
<dt><strong>ret_e</strong> <span class="classifier-delimiter">:</span> <span class="classifier">float</span></dt>
<dd></dd>
</dl>
</td>
</tr>
</tbody>
</table>
<p class="rubric">References</p>
<p>Routine is wrapper around Fortran routine <code class="docutils literal notranslate"><span class="pre">youngs_modulus</span></code> defined in file <a class="reference external" href="https://github.com/libAtoms/QUIP/blob/public/src/Utils/elasticity.f95">src/Utils/elasticity.f95</a>.</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.strain_matrix">
<code class="descclassname">quippy.elasticity.</code><code class="descname">strain_matrix</code><span class="sig-paren">(</span><em>strain_vector</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#strain_matrix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.strain_matrix" title="Permalink to this definition">¶</a></dt>
<dd><p>Form a 3x3 strain matrix from a 6 component vector in Voigt notation</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.stress_matrix">
<code class="descclassname">quippy.elasticity.</code><code class="descname">stress_matrix</code><span class="sig-paren">(</span><em>stress_vector</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#stress_matrix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.stress_matrix" title="Permalink to this definition">¶</a></dt>
<dd><p>Form a 3x3 stress matrix from a 6 component vector in Voigt notation</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.strain_vector">
<code class="descclassname">quippy.elasticity.</code><code class="descname">strain_vector</code><span class="sig-paren">(</span><em>strain_matrix</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#strain_vector"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.strain_vector" title="Permalink to this definition">¶</a></dt>
<dd><p>Form a 6 component strain vector in Voight notation from a 3x3 matrix</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.stress_vector">
<code class="descclassname">quippy.elasticity.</code><code class="descname">stress_vector</code><span class="sig-paren">(</span><em>stress_matrix</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#stress_vector"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.stress_vector" title="Permalink to this definition">¶</a></dt>
<dd><p>Form a 6 component stress vector in Voight notation from a 3x3 matrix</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.fit_elastic_constants">
<code class="descclassname">quippy.elasticity.</code><code class="descname">fit_elastic_constants</code><span class="sig-paren">(</span><em>configs</em>, <em>symmetry=None</em>, <em>N_steps=5</em>, <em>verbose=True</em>, <em>graphics=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#fit_elastic_constants"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.fit_elastic_constants" title="Permalink to this definition">¶</a></dt>
<dd><dl class="docutils">
<dt>quippy.elasticity.fit_elastic_constants() deprecated, please use</dt>
<dd>matscipy.elasticity.fit_elastic_constants() instead</dd>
</dl>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.elastic_constants">
<code class="descclassname">quippy.elasticity.</code><code class="descname">elastic_constants</code><span class="sig-paren">(</span><em>pot</em>, <em>at</em>, <em>sym='cubic'</em>, <em>relax=True</em>, <em>verbose=True</em>, <em>graphics=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#elastic_constants"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.elastic_constants" title="Permalink to this definition">¶</a></dt>
<dd><dl class="docutils">
<dt>quippy.elasticity.elastic_contants() deprecated, please use</dt>
<dd>matscipy.elasticity.fit_elastic_constants() instead</dd>
</dl>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.atomic_strain">
<code class="descclassname">quippy.elasticity.</code><code class="descname">atomic_strain</code><span class="sig-paren">(</span><em>at</em>, <em>r0</em>, <em>crystal_factor=1.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#atomic_strain"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.atomic_strain" title="Permalink to this definition">¶</a></dt>
<dd><p>Atomic strain as defined by JA Zimmerman in <cite>Continuum and Atomistic Modeling of
Dislocation Nucleation at Crystal Surface Ledges</cite>, PhD Thesis, Stanford University (1999).</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.elastic_fields_fortran">
<code class="descclassname">quippy.elasticity.</code><code class="descname">elastic_fields_fortran</code><span class="sig-paren">(</span><em>at</em>, <em>a</em><span class="optional">[</span>, <em>c11</em>, <em>c12</em>, <em>c44</em>, <em>cij</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#quippy.elasticity.elastic_fields_fortran" title="Permalink to this definition">¶</a></dt>
<dd><p>elastic_fields(at,a,[c11,c12,c44,cij])</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><dl class="first last docutils">
<dt><strong>at</strong> <span class="classifier-delimiter">:</span> <span class="classifier"><a class="reference internal" href="atoms.html#quippy.atoms.Atoms" title="quippy.atoms.Atoms"><code class="xref py py-class docutils literal notranslate"><span class="pre">Atoms</span></code></a> object</span></dt>
<dd></dd>
<dt><strong>a</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input float</span></dt>
<dd></dd>
<dt><strong>c11</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input float, optional</span></dt>
<dd></dd>
<dt><strong>c12</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input float, optional</span></dt>
<dd></dd>
<dt><strong>c44</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input float, optional</span></dt>
<dd></dd>
<dt><strong>cij</strong> <span class="classifier-delimiter">:</span> <span class="classifier">input rank-2 array(‘d’) with bounds (6,6), optional</span></dt>
<dd></dd>
</dl>
</td>
</tr>
</tbody>
</table>
<p class="rubric">References</p>
<p>Routine is wrapper around Fortran routine <code class="docutils literal notranslate"><span class="pre">elastic_fields</span></code> defined in file <a class="reference external" href="https://github.com/libAtoms/QUIP/blob/public/src/Utils/elasticity.f95">src/Utils/elasticity.f95</a>.</p>
</dd></dl>

<dl class="function">
<dt>
<code class="descclassname">quippy.elasticity.</code><code class="descname">elastic_fields</code><span class="sig-paren">(</span><em>at</em>, <em>a=None</em>, <em>bond_length=None</em>, <em>c=None</em>, <em>c_vector=None</em>, <em>cij=None</em>, <em>save_reference=False</em>, <em>use_reference=False</em>, <em>mask=None</em>, <em>interpolate=False</em>, <em>cutoff_factor=1.2</em>, <em>system='tetrahedric'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#elastic_fields"><span class="viewcode-link">[source]</span></a></dt>
<dd><p>Compute atomistic strain field and linear elastic stress response.</p>
<p>Stress and strain are stored in compressed Voigt notation:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">at</span><span class="o">.</span><span class="n">strain</span><span class="p">[:,</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">e_xx</span><span class="p">,</span><span class="n">e_yy</span><span class="p">,</span><span class="n">e_zz</span><span class="p">,</span><span class="n">e_yz</span><span class="p">,</span><span class="n">e_xz</span><span class="p">,</span><span class="n">e_xy</span><span class="p">]</span>
<span class="n">at</span><span class="o">.</span><span class="n">stress</span><span class="p">[:,</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">sig_xx</span><span class="p">,</span> <span class="n">sig_yy</span><span class="p">,</span> <span class="n">sig_zz</span><span class="p">,</span> <span class="n">sig_yz</span><span class="p">,</span> <span class="n">sig_xz</span><span class="p">,</span> <span class="n">sig_xy</span><span class="p">]</span>
</pre></div>
</div>
<p>so that sig = dot(C, strain) in the appropriate reference frame.</p>
<p>Four-fold coordinate atoms within <cite>at</cite> are used to define
tetrahedra. The deformation of each tetrahedra is determined
relative to the ideal structure, using <cite>a</cite> as the cubic lattice
constant (related to bond length by a factor <span class="math notranslate nohighlight">\(sqrt{3}/4\)</span>).
This deformation is then split into a strain and a rotation
using a Polar decomposition.</p>
<p>If <cite>save_reference</cite> or <cite>use_reference</cite> are True then <cite>at</cite> must have
a <cite>primitive_index</cite> integer property which is different for each
atom in the primitive unit cell. <cite>save_reference</cite> causes the
local strain and rotation for one atom of each primitive type
to be saved as entries <cite>at.params</cite>. Conversely, <cite>use_reference</cite> uses
this information and to undo the local strain and rotation.</p>
<p>The strain is then transformed into the crystal reference frame
(i.e. x=100, y=010, z=001) to calculate the stress using the <cite>cij</cite>
matrix of elastic constants. Finally the resulting stress is
transformed back into the sample frame.</p>
<p>The stress and strain tensor fields are interpolated to give
values for atoms which are not four-fold coordinated (for example
oxygen atoms in silica).</p>
<p>Eigenvalues and eigenvectors of the stress are stored in the
properties <cite>stress_evals</cite>,`stress_evec1`, <cite>stress_evec2</cite> and
<cite>stress_evec3</cite>, ordered decreasingly by eigenvalue so that the
principal eigenvalue and eigenvector are <cite>stress_evals[1,:]</cite> and
<cite>stress_evec1[:,i]</cite> respectively.</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.transform_elasticity">
<code class="descclassname">quippy.elasticity.</code><code class="descname">transform_elasticity</code><span class="sig-paren">(</span><em>c</em>, <em>R</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#transform_elasticity"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.transform_elasticity" title="Permalink to this definition">¶</a></dt>
<dd><p>Transform c as a rank-4 tensor by the rotation matrix R.</p>
<p>Returns the new representation c’. If c is a 6x6 matrix it is first
converted to 3x3x3x3 form, and then converted back after the
transformation.</p>
</dd></dl>

<dl class="function">
<dt id="quippy.elasticity.rayleigh_wave_speed">
<code class="descclassname">quippy.elasticity.</code><code class="descname">rayleigh_wave_speed</code><span class="sig-paren">(</span><em>C</em>, <em>rho</em>, <em>a=4000.0</em>, <em>b=6000.0</em>, <em>isotropic=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/quippy/elasticity.html#rayleigh_wave_speed"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quippy.elasticity.rayleigh_wave_speed" title="Permalink to this definition">¶</a></dt>
<dd><p>Rayleigh wave speed in a crystal.</p>
<p>Returns triplet <code class="docutils literal notranslate"><span class="pre">(vs,</span> <span class="pre">vp,</span> <span class="pre">c_R)</span></code> in m/s, where <cite>vs</cite> is the transverse
wave speed, <cite>vp</cite> the longitudinal wave speed and <cite>c_R</cite> the Rayleigh
shear wave speed.</p>
<p>For the anisotropic case (default), formula is Darinskii,
A. (1997).  On the theory of leaky waves in crystals.  <a class="reference external" href="http://dx.doi.org/10.1016/S0165-2125(96)00031-5">Wave
Motion, 25(1),
35-49.</a>. If
<cite>isostropic</cite> is True, formula is from <a class="reference external" href="http://sepwww.stanford.edu/data/media/public/docs/sep124/jim1/paper_html/node5.html">this page</a></p>
<p><cite>C</cite> is the 6x6 matrix of elastic contstant, rotated to reference
the frame of sample, and should be given in units of GPa.  The
Rayleight speed returned is along the first (x) axis.</p>
<p><cite>rho</cite> is the density in g/cm^3.</p>
</dd></dl>

</div>


           </div>
           
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
      
        <a href="cp2k.html" class="btn btn-neutral float-left" title="CP2K I/O and driver" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        &copy; Copyright 2008-2016, James Kermode

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>